﻿(function () {

    var onLoadError = function (jqXHR, textStatus, errorThrown) {
        /// <summary>
        /// 通用错误提示函数
        /// <para>在登录过期后页面跳转到登录页</para>
        /// <para>http://www.cnblogs.com/dudu/p/ajax_302_found.html</para>
        /// <para>http://www.cnblogs.com/jiguixin/p/3388179.html</para>
        /// <para>在请求失败时跟据不同的错误类型给用户提示不同的信息</para>
        /// <para>在请求成功时打印可能的提示信息</para>
        /// </summary>
        /// <param name="jqXHR">jq封装的异步提交对象</param>
        /// <param name="textStatus">状态</param>
        /// <param name="errorThrown">异常</param>
        if (jqXHR.status == 401) {
            eval(jqXHR.responseText);
            return;
        }

        if (textStatus == "timeout") {
            $.messager.showReqErr("系统正忙,请稍后再试...");
        }
        else if (jqXHR.responseText == "top.location='/Home/Login'") {
            $.messager.showReqErr("登录超时，请重新登录。", function () { eval(jqXHR.responseText); });
        }
        else {
            $.messager.showReqErr("系统正忙,请稍后再试..."); return;
            if (jqXHR.responseText.indexOf("<title>") > 0) {
                //截取错误页面中的<title></title>标题文字
                var msg = jqXHR.responseText.substr(jqXHR.responseText.indexOf("<title>") + 7, (jqXHR.responseText.indexOf("</title>") - (jqXHR.responseText.indexOf("<title>") + 7)));
                if (msg.indexOf("未将对象引用设置到对象的实例") >= 0) {
                    msg = "参数有误，或数据不完整。请联系管理员";
                }
                $.messager.showReqErr(msg);
            }
            else {
                $.messager.showReqErr();
            }
        }
    };

    // 设置EasyUI通用错误提示函数
    // $.easyui.ajaxError(onLoadError);

    /// <summary>
    /// 拦截Ajax请求,处理公共逻辑
    /// <para>自动在链接后加随机数</para>
    /// <para>使用Asp.Net MVC识别的数组形式</para>
    /// <para>将页面上下文对象中的bwaId值追加到提交内容</para>
    /// <para>在发起请求前打开遮罩,在完全请求后关闭遮罩</para>
    /// <para>在请求失败时执行通用错误提示函数</para>
    /// </summary>
    $.ajaxSetup({
        cache: false,
        traditional: true,
        beforeSend: function (jqXHR) {
            $.messager.showWait();
        },
        success: function (data, textStatus, jqXHR) {
            if (typeof (data.success) != "undefined") {
                if (!data.success) {
                    $.messager.showReqErr();
                } else if (data.Message) {
                    $.messager.showReqErr();
                }
            }
        },
        complete: function (jqXHR, textStatus) {
            //if (textStatus == "success") {
            //    $.messager.showReqOk();
            //}
        },
        error: onLoadError
    });
})();

$(function () {
    if ($(".sex_inp").val() == "先生" || $(".sex_inp").val() == "") {
        $(".sex_1").addClass("on");
        $(".sex_2").removeClass("on");
    } else if ($(".sex_inp").val() == "女士") {
        $(".sex_2").addClass("on");
        $(".sex_1").removeClass("on");
    }
    if ($(".tab_warp>table").length >0) {
        var table_width = $(".tab_warp>table").css("width");
        $(".main01").css("width", table_width)
    }
    
})

function SexSelect1() {
    $(".sex_1").addClass("on");
    $(".sex_2").removeClass("on");
    $(".sex_inp").val("先生");
}

function SexSelect2() {
    $(".sex_2").addClass("on");
    $(".sex_1").removeClass("on");
    $(".sex_inp").val("女士");
}
function scrollleft() {
    $("body").scrollLeft(0);
}

function PopOpen() {
    $(".choose_pop").show();
    $(".cover").show();
}

function PopClose() {
    $(".choose_pop").hide();
    $(".cover").hide();
}

// JavaScript Document
$(function () {
    //initInput();
});

function start() {
    $(".bton_left_nav a").css({ "background-color": "#fff", "border": "1px solid #e3e4e6", "border-right": "none" });
    $(".bton_left_nav .last").css({ "background-color": "#fff", "border": "1px solid #e3e4e6" });
    $(".bton_left_nav a").mouseover(function () {
        $(this).css({ "background-color": "#0074d9", "border": "1px solid #0074d9", "border-right": "none" });
    });
    $(".bton_left_nav a").mouseout(function () {
        $(this).css({ "background-color": "#fff", "border": "1px solid #e3e4e6", "border-right": "none" });
    });
    $(".bton_left_nav .last").mouseover(function () {
        $(this).css({ "background-color": "#0074d9", "border": "1px solid #0074d9" });
    });
    $(".bton_left_nav .last").mouseout(function () {
        $(this).css({ "background-color": "#fff", "border": "1px solid #e3e4e6" });
    })
    $(".bton_left_nav a").mousedown(function () {
        $(this).css({ "background-color": "#0f3280" });
    });
    $(".bton_left_nav").eq(1).children("a").each(function (i) {
        var cla = $(".bton_left_nav").eq(1).children("a").eq(i).attr("class");
        var _btn1 = $(".bton_left_nav").eq(1).children("a").eq(i);
        var str = _btn1.attr("data_option");
        if (str != undefined) {
            jsObj = eval('({' + str + '})');
            if (jsObj.onBtnclick && jsObj.onBtnclick instanceof Function) {
                _btn1.unbind('click')
                _btn1.click(jsObj.onBtnclick);
            }
        }
        if (cla != undefined && cla.substr(0, 2) == "re") {
            _btn1.removeClass(cla).addClass(cla.slice(2));
        }
    });
}

/*禁用样式*/
function disabled() {
    $(".bton_left_nav").eq(1).children("a").css({ "background-color": "#f6f6f6", "border": "1px solid #e3e4e6", "border-right": "none" });
    $(".bton_left_nav .last").eq(1).css({ "background-color": "#f6f6f6", "border": "1px solid #e3e4e6" });
    $(".bton_left_nav").eq(1).children("a").each(function (i) {
        var cla = $(".bton_left_nav").eq(1).children("a").eq(i).attr("class");
        $(".bton_left_nav").eq(1).children("a").eq(i).mouseover(function () {
            $(this).css({ "background-color": "#f6f6f6", "border": "1px solid #e3e4e6", "border-right": "none" });
        });
        $(".bton_left_nav").eq(1).children("a").eq(i).mouseout(function () {
            $(this).css({ "background-color": "#f6f6f6", "border": "1px solid #e3e4e6", "border-right": "none" });
        });
        $(".bton_left_nav .last").eq(1).mouseover(function () {
            $(this).css({ "background-color": "#f6f6f6", "border": "1px solid #e3e4e6" });
        });
        $(".bton_left_nav .last").eq(1).mouseout(function () {
            $(this).css({ "background-color": "#f6f6f6", "border": "1px solid #e3e4e6" });
        })
        $(".bton_left_nav").eq(1).children("a").eq(i).mousedown(function () {
            $(this).css({ "background-color": "#f6f6f6" });
        });
        if (cla.substr(0, 2) == "bt") {
            var _btn1 = $(".bton_left_nav").eq(1).children("a").eq(i);
            _btn1.removeClass(cla).addClass("re" + cla);
            _btn1.unbind('click');
            _btn1.click(function () { });
        }

    });
}

function initInput() {
    //$(':checkbox').iCheck('destroy');//先移除所有渲染事件 再进行重新渲染
    //$(':radio').iCheck('destroy');
    $(':checkbox').iCheck({
        checkboxClass: 'icheckbox_minimal-orange',
        radioClass: 'iradio_minimal-orange',
        increaseArea: '20%' // optional
    });
    $(':radio').iCheck({
        checkboxClass: 'icheckbox_minimal-orange',
        radioClass: 'iradio_minimal-orange',
        increaseArea: '20%' // optional
    });
    
    $('.info_title input').on('ifChecked', function (event) {
        $(".info_cont input").iCheck('check'); num(1);
    });
    $('.info_title input').on('ifUnchecked', function (event) {
        $(".info_cont input").iCheck('uncheck');
        num(0);
    });

    $(".info_cont input").on('ifClicked', function () {
        if ($(this).attr("checked")) {
            $('.info_title input').attr('checked', false);
            $('.info_title input').parent().removeClass("checked");
            num(-1); return;
        }
        num(1);
    });
    /*按钮*/
    start();

}

function num(checknum) {
    // checknum 是在checked==false是才会有值
    var i = 0;
    if (checknum && checknum != undefined) {
        i = checknum;
    }
    if ($(this).parent().hasClass("checked"))
        i--;
    else
        i++;

    $("input[name=Kid]").each(function () {
        if ($(this).parent().hasClass("checked")) {
            i++;
        }
    });

    if (i > 2) {
        disabled();
    }
    else
        start();
}



//table 数据绑定的行单击事件
function datatrclick(val) {
    if (val == undefined) {
        $("table[data-grid] tbody tr").click(function () {
            var obj = $(this).find("input:checkbox");
            if (obj.length > 0) {
                if ($(obj).attr("checked") === "checked") {
                    $(obj).attr('checked', false);
                    $(obj).parent().removeClass("checked");
                    num(0);
                }
                else {
                    num(1);
                    $(obj).attr('checked', true);
                    $(obj).parent().addClass("checked");
                }
            }
        });
    }
    else {
        $("table[data-grid] tbody tr").click(function () {
            $("table[data-grid] tbody").each(function () {
                $(this).find("input:checkbox").attr('checked', false);
                $(this).find("input:checkbox").parent().removeClass("checked");
            });
            $(this).find("input:checkbox").attr('checked', true);
            $(this).find("input:checkbox").parent().addClass("checked");
        });
    }
}

//getData获取数据的函数
//TotalCount 数据总条数
//PageNumber 当前页码
// PageSize 页码容量
function makePageBar(getData, TotalCount, PageNumber, PageSize) {
    FillPager(".pageIn", {
        TotalCount: TotalCount,
        PageNumber: PageNumber,
        PageSize: PageSize,
        Type: 1,
        Click: getData
    });
    FillPager(".pageIn2", {
        TotalCount: TotalCount,
        PageNumber: PageNumber,
        PageSize: PageSize,
        Type: 2,
        Click: getData
    });

    FillPager(".pageIn3", {
        TotalCount: TotalCount,
        PageNumber: PageNumber,
        PageSize: PageSize,
        Type: 3,
        Click: getData
    });
}
//getData获取数据的函数
//TotalCount 数据总条数
//PageNumber 当前页码
// PageSize 页码容量
function makePageBarType(selector, getData, TotalCount, PageNumber, PageSize,typeval) {
    FillPager(selector, {
        TotalCount: TotalCount,
        PageNumber: PageNumber,
        PageSize: PageSize,
        Type: typeval,
        Click: getData
    });    
}

/*判断checked个数*/
$(function () {
    $("input").on('ifChanged', function () {
        num();
    });
    $("table[data-gridtree]").each(function () {
        var tds = $(this).find("td[level]");
        if (tds.length > 0) {
            CreateTree(tds);
        }
    });
    $(".inpall").blur(function () {
        validate($(this));
    })
});

/*list*/
// JavaScript Document


$(function () {
    /*全选*/
    //var script1 = document.createElement("script");
    //script1.type = "text/javascript";
    //script1.src = "/Scripts/jquery.fDialog.min.js";
    //document.getElementsByTagName('head')[0].appendChild(script1);
    $('.info_title input').on('ifChecked', function (event) {
        $(".info_cont input").iCheck('check'); num(1);
    });
    $('.info_title input').on('ifUnchecked', function (event) {
        $(".info_cont input").iCheck('uncheck');
        num(0);
    });

    $(".bton_left_nav").find("a:last-child").addClass("last");

    /*按钮*/
    start();
});

function countwidth() {
    var widthall = 0;
    var thall = $(".tab_warp th");
    for (var i = 0; i < thall.length; i++) {
        widthall = widthall + thall.eq(i).width();
    }
    $(".main01").width(widthall);
}

/*表格行背景*/
$(function () {
    startmouse();
    $(".iCheck-helper").mouseover(function () {
        $(this).parents("div").parents("td").parents("tr").children("td").eq(0).addClass("line").parent("tr").addClass("bg");
    });
    $(".iCheck-helper").mouseout(function () {
        $(this).parents("div").parents("td").parents("tr").children("td").eq(0).removeClass("line").parent("tr").addClass("bg");
    });
    $(".on_off").mouseover(function () {
        $(this).addClass("bg").children("td").eq(0).addClass("line");
    });
    $(".on_off").mouseout(function () {
        $(this).removeClass("bg").children("td").eq(0).removeClass("line");
    });
    $(".status02").hide();
    $(".on_off").click(function () {
        var index = $(".on_off").index(this);
        $(".on_off").children("td").removeClass("bg").removeClass("lineall")
        $(this).children("td").addClass("bg").addClass("lineall");
    });
});

$(function () {

    $(".line_add>ul>li").mouseover(function () {
        $(this).css({ "border": "1px solid  #0074d9", "color": "#0074d9" });
        $(this).find("a").addClass("delete_unnone");
    });
    $(".line_add>ul>li").mouseout(function () {
        $(this).css({ "border": "1px solid #d9d9d9", "color": "#666" });
        $(this).find("a").removeClass("delete_unnone");
    });
    $(".line_add>ul>li:first-child ").mouseover(function () {
        $(this).css({ "border": "none", "color": "#666" });
        $(this).find("a").addClass("delete_unnone");
    });
    $(".line_add>ul>li:first-child ").mouseout(function () {
        $(this).css({ "border": "none", "color": "#666" });
        $(this).find("a").addClass("delete_unnone");
    });
});


function startmouse() {
    $(".info_cont").mouseover(function () {
        $(this).addClass("bg").children("td").eq(0).addClass("line");
        $(this).children("td").children(".reset").show();
        $(this).children("td").children(".recheck").show();
    });
    $(".info_cont").mouseout(function () {
        $(this).removeClass("bg").children("td").eq(0).removeClass("line");
        $(this).removeClass("line").children("td").children(".reset").hide();
        $(this).children("td").children(".recheck").hide();
    });
}



//树状函数
function CreateTree(tds) {

    var tree = $.map(tds, function (n) {
        return parseInt($(n).attr("level"));
    });

    var createNode = function (index) {
        var curr = {
            lv: tree[index],
            icons: []
        };
        tree[index] = curr;
        if (curr.lv == 0) { //顶级菜单
            return curr;
        }

        for (var i = 0; i < (curr.lv - 1) ; i++) {
            curr.icons.push(0);
        }

        if (tree.length == index + 1) { //最后一个菜单
            curr.icons.push(2);
            return curr;
        }

        var next = tree[index + 1];
        var diff = next.lv - curr.lv;

        var copyIcons = function (count) {
            count = Math.min(count, next.icons.length);
            for (var i = 0; i < count; i++) {
                curr.icons[i] = (next.icons[i] == 0) ? 0 : 1;
            }
        }

        switch (diff) {
            case 0:
                copyIcons(curr.lv - 1);
                curr.icons.push(3);
                break;
            case 1:
                copyIcons(curr.lv - 1);
                var icon = next.icons.slice(-2, -1)[0];
                switch (icon) {
                    case 0:
                        curr.icons.push(2);
                        break;
                    case 1:
                        curr.icons.push(3);
                        break;
                    case 2:
                        curr.icons.push(1);
                        break;
                    case 3:
                        curr.icons.push(3);
                        break;
                    default:
                        break;
                }
                break;
            case -1:
                copyIcons(curr.lv - 2);
                if (next.lv > 0) {
                    curr.icons.pop();
                    curr.icons.push(1);
                }
                curr.icons.push(2);
                break;
            default:
                copyIcons(curr.lv - 1);
                curr.icons.push(2);
                break;
        }
        return curr;
    }

    for (var i = tree.length - 1; i >= 0; i--) {
        var td = $(tds[i]);
        var node = createNode(i);
        if (node.lv == 0) {
            continue;
        }
        var txt = td.html();
        td.empty();
        for (var j in node.icons) {
            switch (node.icons[j]) {
                case 0:
                    td.append('<div class="line_none fl">');
                    break;
                case 1:
                    td.append('<div class="line_conn fl">');
                    break;
                case 2:
                    td.append('<div class="line_bottom fl">');
                    break;
                case 3:
                    td.append('<div class="line_center fl">');
                    break;
                default:
                    break;
            }
        }
        td.find("div:last-child").html(txt);
    }
}

// selector DOM节点
// data json数据
function FillTable(selector, data, setData, settrDataevent) {
    var table = $(selector)
    if (table.length != 1 || table.is("table") == false) {
        throw Error("绑定对象太多或不是table");
    }

    var func = null;
    if (setData && setData.constructor === Function) {
        func = setData;
    }

    var template = table.data("grid-template");
    if (!template) {
        template = table.find("tr[template]");
        if (template.length == 0) {
            template = table.find("tbody tr:first");
        }
        table.data("grid-template", $("<div />").append(template.attr("data-row", "").show()).html());
        template.remove();
        template = table.data("grid-template");
    } else {
        table.find("[data-row]").remove();
    }
    if (!data || data.constructor !== Array) {
        return;
    }

    var tbody = table.find("tbody");
    for (var i in data) {
        var it = data[i];
        var html = template.replace(/\{[^{}]+\}/g, function (a) {
            var name = a.slice(1, -1);
            var value;
            if (func) {
                value = func(it, name);
                if (value === undefined) {
                    value = it[name];
                }
            } else {
                value = it[name];
            }
            if (value == null) {
                return "";
            }
            return value;
        });
        tbody.append(html.replace(/<script.*?>.*?<\/script>/ig, ''));
        if (settrDataevent && settrDataevent instanceof Function)
            settrDataevent(it, name);
    }
}


function CreateCheckBox(selector) {
    var checkbox = $(selector || 'input:checkbox[xxxxx]')
    checkbox.wrap(' <div class="make-switch switch-small" data-on-label="ON " data-off-label="OFF">').parent().bootstrapSwitch();
}

//金额输入框onkeyup事件 验证输入金额，允许输入小数点至后2位，其余的都不允许  调用方式： onkeyup="clearNoNum(this)"
function clearNoNum(obj) {
    $(obj).bind('input propertychange', function () {
        this.value = this.value.replace(/[^\d\.-]/g, "");
    });

    obj.value = obj.value.replace(/[^\d.]/g, "");  //清除“数字”和“.”以外的字符  
    obj.value = obj.value.replace(/^\./g, "");  //验证第一个字符是数字而不是. 
    obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的.
    obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");//禁止使用输入法(貌似没用啊)
    obj.value = obj.value.replace(/([0-9]+\.[0-9]{2})[0-9]*/, "$1"); //只保留小数点的后2位
    //  /^\d+(\.\d+)?$/   ----验证只能是文字跟小数点     /^\d+(\.\d{2})?$/   只能是数字 保留小数点后2位
}
function clearNoNum_4(obj) {
    obj.value = obj.value.replace(/[^\d.]/g, "");  //清除“数字”和“.”以外的字符  
    obj.value = obj.value.replace(/^\./g, "");  //验证第一个字符是数字而不是. 
    obj.value = obj.value.replace(/\.{2,}/g, "."); //只保留第一个. 清除多余的.
    obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");//禁止使用输入法(貌似没用啊)
    obj.value = obj.value.replace(/([0-9]+\.[0-9]{4})[0-9]*/, "$1"); //只保留小数点的后4位
    //  /^\d+(\.\d+)?$/   ----验证只能是文字跟小数点     /^\d+(\.\d{2})?$/   只能是数字 保留小数点后2位
}

//数字输入框onkeyup事件 验证手机号码，只能输入数字  调用方式： onkeyup="clearNoPhone(this)"
function clearNoPhone(obj) {
    $(obj).bind('input propertychange', function () {
        this.value = this.value.replace(/[^\d\.-]/g, "");
    });
    obj.value = obj.value.replace(/[^\d]/g, "");  //清除“数字”以外的字符  
}

//获取更改后的URL地址参数集合，不包括页面地址  urlStr:url完整地址 包括参数    par 要修改的参数名称   par_value修改参数的值
function getURLPar(urlStr, par, par_value) {
    var urlParStr = "";//URL地址参数集合
    var pattern = par + '=([^&]*)';
    var replaceText = par + '=' + par_value;//修改后的值
    if (urlStr.match(pattern)) //如果地址中已经存在该参数 则直接替换
    {
        var tmp = '/\\' + par + '=[^&]*/';
        tmp = urlStr.replace(eval(tmp), replaceText);
        urlParStr = tmp;
    }
    else//地址不存在该参数，则拼接一个新的参数
    {
        if (urlStr.match('[\?]'))//是否已经存在其他参数
        {
            urlParStr = urlStr + '&' + replaceText;
        }
        else {
            urlParStr = urlStr + '?' + replaceText;
        }
    }
    urlParStr = urlParStr.substr(urlParStr.indexOf("?"), urlParStr.length - urlParStr.indexOf("?"));
    return urlParStr;
}

//单击行,div展开的事件
function tableSlide(config) {
    config.tableType = parseInt(config.tableType);
    if (config.tableType == 1 || config.tableType == 2) {
    } else { throw new Error("config.tableType参数错误"); }
    if (config.tableType == 1) {
        $(".info_cont").click(function () {
            var index = $(".info_cont").index(this);
            var temp = $(".info_slide").eq(index).is(":hidden");
            if (temp) {
                $(".info_slide").slideUp("50");
                $(".info_slide").eq(index).slideDown("50");
            } else {
                $(".info_slide").slideUp("50");
            }
        });
    } else if (config.tableType == 2) {
        $(".info_cont").click(function () {
            var index = $(".info_cont").index(this);
            $(".info_slide").eq(index).slideToggle("50");
        });
    }
}

//修改URL地址参数
function changeURLPar(destiny, par, par_value) {
    var pattern = par + '=([^&]*)';
    var replaceText = par + '=' + par_value;
    if (destiny.match(pattern)) {
        var tmp = '/\\' + par + '=[^&]*/';
        tmp = destiny.replace(eval(tmp), replaceText);
        return (tmp);
    }
    else {
        if (destiny.match('[\?]')) {
            return destiny + '&' + replaceText;
        }
        else {
            return destiny + '?' + replaceText;
        }
    }
}


/*--------默认头像公用js---------*/

function errorimg(img, type) {
    if (type && (type == 1 || type == "男" || type == "先生")) {
        img.src = "/Content/images/man.png";
    }
    else if (type && (type == 0 || type == "女" || type == "女士")) {
        img.src = "/Content/images/woman.png";
    }
    else {
        img.src = "/Content/images/nopic.png";
    }
    img.onerror = null;
}
//相关所属角色页面.角色折叠方法
function parenton(kid) {
    $("tr[pid]").each(function () {
        var pid = $(this).attr("pid");
        if (pid != 0) {
            $(this).hide();
        }
    })

    var val = $("tr[kid=" + kid + "]").attr("val");
    if (val == "true") {
        $("tr[val]").attr("val", true);
        $("tr[val]").find("div[rolediv]").removeClass("role_show").addClass("role_hide");
        $("tr[kid=" + kid + "]").attr("val", false);
        $("tr[pid=" + kid + "]").each(function () {
            $(this).show();
        });
        $("tr[kid=" + kid + "]").find("div[rolediv]").removeClass("role_hide").addClass("role_show");
        return;
    }
    $("tr[val]").attr("val", true);
    $("tr[val]").find("div[rolediv]").removeClass("role_show").addClass("role_hide");
}


//金额用逗号隔开,数字格式化   例如12345 格式化为  12,345.00
function fmoney(s, n) {
    n = n > 0 && n <= 20 ? n : 2;
    s = parseFloat((s + "").replace(/[^\d\.-]/g, "")).toFixed(n) + "";
    var l = s.split(".")[0].split("").reverse(),
    r = s.split(".")[1];
    t = "";
    for (i = 0; i < l.length; i++) {
        t += l[i] + ((i + 1) % 3 == 0 && (i + 1) != l.length ? "," : "");
    }
    return t.split("").reverse().join("") + "." + r;
}
//还原
function rmoney(s) {
    return parseFloat(s.replace(/[^\d\.-]/g, ""));
}

//数字输入框onkeyup事件 验证手机号码，只能输入数字  调用方式： onkeyup="clearNoPhone(this)"
function clearNoPhone_Number(obj) {
    $(obj).bind('input propertychange', function () {
        this.value = this.value.replace(/[^\d\.-]/g, "");
    });


    var valueStr = $.trim(obj.value);
    obj.value = valueStr;
    obj.value = obj.value.replace(/[^\d]/g, "");  //清除“数字”以外的字符
}